/**
 * @author 侯非
 * @date 2009-03-19
 * @class MoneyStandardGridPanel
 * @extends Ext.grid.GridPanel
 * @description 薪酬标准表格
 */
MoneyStandardGridPanel = Ext.extend(Ext.grid.GridPanel, {
	// 唯一id
	myid : "my_id",
	checkWin : null,
	editWin : null,
	// 构造方法
	constructor : function(_config) {
		if (_config == null) {
			_config = {};
		}
		Ext.apply(this, _config);
		// 数据存贮器
		this["store"] = new Ext.data.JsonStore({
					url : "moneyStandard.do?operator=showMoneyInfoByPage", // 服务端地址
					totalProperty : "totalCount", // 总记录条数(带条件)
					root : "rows", // 数据集
					// 数据解析
					fields : ["miId", "miStandardId", "miStandardName",
							"miCountMoney", "miAddDate", "miState", "miMemo"]
				});
		// 创建审核薪酬标准窗体的实例
		this.checkWin = new CheckMoneyStandardWindow();
		this.editWin = new EditMoneyStandardWindow();
		// 拷贝父类的构造
		MoneyStandardGridPanel.superclass.constructor.call(this, {
			id : this.myid,
			title : "审核与变更薪酬标准", // 标题
			stripeRows : true, // 交替行效果
			iconCls : "houfei-treeNodeLeafIcon",
			colModel : new Ext.grid.ColumnModel([
					new Ext.grid.CheckboxSelectionModel({
								header : ""
							}), {
						header : "编号",
						sortable : true,
						dataIndex : "miId"
					}, {
						header : "薪酬标准号",
						sortable : true,
						dataIndex : "miStandardId"
					}, {
						header : "薪酬标准名",
						sortable : true,
						dataIndex : "miStandardName"
					}, {
						header : "薪标总金额",
						sortable : true,
						dataIndex : "miCountMoney",
						renderer : function(value) {
							// 美国货币样式
							var _usaMoney = Ext.util.Format.usMoney(value);
							// 中国货币样式
							var _chinaMoney = Ext.util.Format.substr(_usaMoney,
									1, _usaMoney.length);
							return "<img src='images/icons/money.png' /><span style='color:red;'>"
									+ _chinaMoney + "</span>";
						}
					}, {
						header : "登记时间",
						sortable : true,
						dataIndex : "miAddDate"
					}, {
						header : "审核状态",
						sortable : true,
						dataIndex : "miState"
					}, {
						header : "备注",
						sortable : true,
						dataIndex : "miMemo"
					}]),
			viewConfig : {
				forceFit : true
			},
			// 填充数据加载时间
			loadMask : {
				msg : "正在加载数据,请稍后..."
			},
			selModel : new Ext.grid.RowSelectionModel({
						singleSelect : true
					}),
			tbar : [{
						text : "审核",
						iconCls : "houfei-checkIcon",
						tooltip : "选择一条\"未审核\"或者\"未通过审核\"的薪酬标准信息进行审核",
						handler : this.onCheckMoneyStandard,
						scope : this
					}, "-", {
						text : "变更",
						iconCls : "houfei-editicon",
						tooltip : "选择一条\"未审核\"或者\"未通过审核\"的薪酬标准信息进行变更",
						handler : this.onEditMoneyStandard,
						scope : this
					}],
			bbar : new Ext.PagingToolbar({
				store : this["store"], // 数据存储器
				pageSize : 17, // 页大小
				displayMsg : "共<font color=\"green\"> {2} </font>条记录,当前页记录索引<font color=\"green\"> {0} - {1}</font>&nbsp;&nbsp;&nbsp;",
				displayInfo : true
			})
		});

		// 数据加载
		this.getStore().load({
					params : {
						start : 0,
						limit : 17
					}
				});

		// 监听checkWin.myForm的自定义事件onMySubmitSuccess(审核薪酬标准表单提交成功事件)
		this.checkWin.myForm.on("onMySubmitSuccess", this.onMySubmitSuccess,
				this);
		// 监听editWin的(确认变更按钮单击事件中的Ajax成功请求回调函数)
		this.editWin.on("onMySuccessUpdate", this.onMySuccessUpdate, this);
	},

	/**
	 * checkWin.myForm属性的审核薪酬标准表单提交成功事件
	 */
	onMySubmitSuccess : function(_form, _action) {
		this.getStore().reload();
		this.checkWin.hide();
	},

	/**
	 * editWin属性的确认变更按钮单击事件中的Ajax成功请求回调函数
	 * 
	 * @param {}
	 *            _response
	 */
	onMySuccessUpdate : function(_response) {
		var _restxt = _response.responseText;
		if (_restxt == "true") {
			this.editWin.hide();
			this.getStore().reload();
		} else {
			Ext.Msg.alert("系统消息", "操作失败,请重新操作或与管理员联系!");
		}
	},

	/**
	 * 修改薪酬标准
	 */
	onEditMoneyStandard : function() {
		// 获取选择模板
		var _sm = this.getSelectionModel();
		// 如果选择了表格的一条记录
		if (_sm.getCount() > 0) {
			// 获取当前选择行的record
			var _sel = _sm.getSelected();
			// 获取薪酬标准号
			var _standardIdld = _sel.get("miStandardId");
			// 显示窗体
			this.editWin.show();
			// 重置表格
			this.editWin.editForm.getForm().reset();
			// 为窗体的myForm加载数据
			this.editWin.editForm.getForm().loadRecord(_sel);
			/**
			 * 表格加载数据
			 */
			this.editWin.eidtGrid.getStore().load({
						// 参数薪酬标准编号
						params : {
							standardId : _standardIdld
						}
					});

		} else {
			Ext.Msg.alert("系统消息", "请您选择一条您要变更的薪酬标准信息!");
		}
	},

	/**
	 * 审核薪酬标准事件
	 */
	onCheckMoneyStandard : function() {
		// 获取选择模板
		var _sm = this.getSelectionModel();
		// 如果选择了表格的一条记录
		if (_sm.getCount() > 0) {
			// 获取当前选择行的record
			var _sel = _sm.getSelected();
			// 获取薪酬标准号
			var _standardIdld = _sel.get("miStandardId");
			// 显示窗体
			this.checkWin.show();
			// 重置表格
			this.checkWin.myForm.getForm().reset();
			// 为窗体的myForm加载数据
			this.checkWin.myForm.getForm().loadRecord(_sel);
			/**
			 * 表格加载数据
			 */
			this.checkWin.myGrid.getStore().load({
						// 参数薪酬标准编号
						params : {
							standardId : _standardIdld
						}
					});

		} else {
			Ext.Msg.alert("系统消息", "请您选择一条您要审核的薪酬标准信息!");
		}
	}

});